# graph-builder - библиотека для работы с графами на языке Go.
Эта open-source библиотека предназначена для работы с графами и представляет из себя реализации основных алгоритмов 
на графах, основные способы представления графов, а также конвертеры для создания этих представлений
из вида ```map[T]map[T]float64``` - то есть заданный спиком смежности, где T - любой тип данных,
поддерживающий операцию сравнения. Пример задания графа:
```go
package main

import (
	"fmt"
	"graph-builder/graph"
)

func main() {
	graph1 := make(map[int]map[int]int)
	graph1[2] = map[int]int{}
	graph1[1] = map[int]int{2: 10, 3: 30, 4: 50, 5: 10}
	graph1[3] = map[int]int{5: 10}
	graph1[4] = map[int]int{2: 40, 3: 20}
	graph1[5] = map[int]int{1: 10, 3: 10, 4: 30}
	g := graph.New(graph1)
  // Метод - алгоритм Дейкстры для поиска минимальных путей из  исходной вершины во все остальные вершины.
	res := g.Dijkstra(1, 3)
	for vert, w := range res {
		fmt.Println(vert, ":", w)
	}
}
```
В некоторых методах используется функция как параметр, например:
```go
func (g *AbstractGraph[T]) BFS(start T, compare func(want T) bool) ([]*Node[T], bool) {
  <some code>
}
```
В данном случае м в метод мы передаём функцию сравнения, которая должна возвращать true - если 
элемент соответствует какому-то переданному значению, false - в обратном случае.
